<?php 
namespace Admin\Model;
use Think\Model;

class MemberModel extends Model
{
	// 添加时调用create方法允许接收的字段
	protected $insertFields = 'name,password,rpassword,regtime,face,regip,gender,status,jifen,jyz,qq_openid,check_code,chkcode';
	//定义验证规则
	protected $_validate = array(
		
		array('name','require','帐号名称已经存在！',0,'unique',1),
		array('password', 'require', '密码不能为空!', 1),
		array('rpassword','password','两次密码不一致',1, 'confirm',3),
	    array('name', '1,30', '昵称的值最长不能超过 30 个字符！', 2, 'length', 3),	
	    array('check_code', 'require', '验证码不能为空', 1, 'regex', 3),
		array('check_code','ck_code','验证码不正确',1,'callback',3),	
		
	);
	
    //登录的验证规则
    public $_login_validate = array(
    	array('name','require','用户名不能为空',1,'regex',1),
    	array('password', 'require', '密码不能为空！', 1, 'regex', 3),
    	array('chkcode', 'require', '验证码不能为空！', 0, 'regex', 3),
    	array('chkcode', 'ck_code', '验证码不正确！', 1, 'callback', 3), 
    );
    //判断验证码是否正确
    protected function ck_code($code){   
    	$verify = new \Think\Verify();  
        return $verify->check($code);
    }
	// 这个方法在添加之前会自动被调用 => 钩子方法
	// 第一个参数：表单中即将要插入到数据库中的数据->数组
	// &按引用传递：函数内部要修改函数外部传进来的变量必须按钮引用传递，除非传递的是一个对象,因为对象默认是按引用传递的
	protected function _before_insert(&$data,$option)
	{
		$data['password'] = md5($data['password']);
		$data['rpassword'] = md5($data['rpassword']);
		var_dump($data);die();
		/**************** 处理face *******************/
		//判断有没有选择图片
		if(isset($_FILES['face']) && $_FILES['face']['error']==0){
			$config = array(
					'maxSize'    =>    3145728,
					'rootPath'   =>    './Public/Uploads/',
					'savePath'   =>    'Goods',
					'exts'       =>    array('jpg', 'gif', 'png', 'jpeg'),
		
			);
			$upload = new \Think\Upload($config);// 实例化上传类
			//调用upload方法;
			$info = $upload->upload();
				
			if(!$info) {// 上传错误提示错误信息
				$this->error($upload->getError());
				return  false;
			}else{
				//echo '<pre>';
				//var_dump($info['face']);die();
				//var_dump($info['face']['savepath']);die();
				//拼接图片的路径
				$face = $info['face']['savepath'] . $info['face']['savename'];
				$sm_face = $info['face']['savepath'] . 'sm_' . $info['face']['savename'];
				$mid_face = $info['face']['savepath'] . 'mid_' . $info['face']['savename'];
				//生成缩略图
				//实例化这个类库
				$image = new \Think\Image();
				//打开原图
				$image->open('./Public/Uploads/'.$face);
				// 生成一个缩放后填充大小150*150的缩略图并保存为thumb.jpg
				$image->thumb(150, 150,1)->save('./Public/Uploads/'.$sm_face);
				$image->thumb(650, 650,1)->save('./Public/Uploads/'.$mid_face);
				//把路径 保存在商品表中
				$data['face'] = $face;
				$data['sm_face'] = $sm_face;
				$data['mid_face'] = $mid_face;
				//删除原来的数据
				//接收商品的ID
				/* $id = I('get.id');
				$info = $this->field('face','mid_face','sm_face')->find($id);
				if($info){
					unlink('./Public/Uploads/'.$info['face']);
					unlink('./Public/Uploads/'.$info['mid_face']);
					unlink('./Public/Uploads/'.$info['sm_face']);
				} */
				//钩子函数 m 插入之前进行加密
				
			}
		}
	
	}

	public function search($perPage =5)
	{	
		$where = array();
		//会员名搜索
		$mb = I('get.name');
		if ($mb) {
			$where['name'] = array(like,"%$mb%");
		}

		//性别搜索
		$gd = I('get.gender');
		if ($gd) {
			$where['gender'] = array('eq',$gd);
		}
		/*************** 翻页 ****************/
		// 取出总的记录数
		$count = $this->where($where)->count();
		// 生成翻页类的对象
		$pageObj = new \Think\Page($count, $perPage);
		// 设置样式
		
		$pageObj->setConfig('next', '下一页');
		$pageObj->setConfig('prev', '上一页');
		$pageObj->setConfig('first', '首页');
		$pageObj->setConfig('last', '尾页');
		// 生成页面下面显示的上一页、下一页的字符串
		$pageString = $pageObj->show();
		
	
		/************** 取某一页的数据 ***************/
		$data = $this->where($where)->limit($pageObj->firstRow.','.$pageObj->listRows)->select();
		
		/************** 返回数据 ******************/
		return array(
			'data' => $data,  // 数据
			'page' => $pageString,  // 翻页字符串
		);
	}
	//登录的方法
	public function login(){
		$username = I('post.name');
		$password = I('post.password');
		//var_dump(md5($password));die();
		$user = $this->field('id,password,name')->where(array(
				'name'=>array('eq',$username),
		))->find();
		//var_dump($user);die();
		if($user){
			if(md5($password) == $user['password']){
				session('member_id',$user['id']);
				session('member_name',$user['name']);
				/****** 移购物车中的数据到数据库 ************/
				$cartModel = D('Home/Cart');
				$cartModel->moveDataToDb();
				return true;
			}else{
		  	    $this->error='密码错误';
			}
		}else{
			$this->error='用户名错误';
		}
	}
    //判断会员是否买过这件商品 
    public function isBuy($goodsId){
    	$id = session('member_id');
    	if(!$id){
    		return false;
    	}
    	//在查看支付订单中有没有这件商品
    	$ogModel = D('order_goods');
    	$ogId = $ogModel->where(array(
    		'member_id'=>array('eq',$id),
    		'goods_id'=>array('eq',$goodsId),
    	))->count();
    	return ($ogId>0);
    }
}

